说明

apache2.4. 源码安装
php5.4 yum安装

问题

apache无法解析php

解决过程

1.打开httpd.conf文件,发现没载入libphp5.so模块。
网上很多网友给出,这么载入 LoadModule php5_module modules/libphp5.so 然而我发现我的modules包里根本没有libphp5.so
2.于是 find / -name libphp5.so 发现目标 /usr/lib64/httpd/modules/libphp5.so
3.于是打开httpd.conf文件,载入libphp5.so模块

LoadModule php5_module modules /usr/lib64/httpd/modules/libphp5.so

启动apache报错如下:
Starting httpd: httpd: Syntax error on line 166 of /usr/local/apache2/conf/httpd.conf: Cannot load /usr/lib64/httpd/modules/libphp5.so into server: /usr/lib64/httpd/modules/libphp5.so: undefined symbol: unixd_config

于是各种查询各种查询,发现大多数都是apache2.2与php5.4整合使用,有的说apache2.4与php5.4不兼容。但是客户就是这个版本,也必须要求这个版本。于是再各种查询,最后在apache2.4官方文档上发现

unixd_config
This has been renamed to ap_unixd_config.

没错,人家apache2.4已经没有unixd_config了,改名了!
于是得出,我的php5.4确实不兼容我的apache2.4。
于是yum卸载掉php5.4.45。
于是重新源码安装php5.4.45

$ yum -y install libxml2 libxml2-devel
$ tar -zxvf php-5.4.45.tar.gz
$ cd php-5.4.45
$ ./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2/bin/apxs --with-libxml2=/usr/include/libxml2
$ make
$ make install php

安装完再次查看apache2的配置文件,载入php模块的代码已出现(必须设置:--with-apxs2=/usr/local/apache2/bin/apxs才有)

#LoadModule php5_module        modules/libphp5.so

于是,去掉注释符,再加入以下配置

AddType application/x-httpd-php .html  #没有此配置,解析不了html文件中的php代码
AddHandler php5-script .php            #没有此配置,php网页不能被正确解析打开,而是被浏览器下载

重新启动apache:成功!
读取php网页:成功!
读取带php代码的html网页:成功!


April
159 声望7 粉丝

润新苗于细雨 成万物于美田